XSS 俗稱 JavaScript Injection ,顧名思義就是讓攻擊者執行惡意的 javascript,以達成其目的。事實上也包括 Java、VBScript、ActiveX、Flash,甚至是 HTML 等。
XSS 是一種繞過 SOP 概念的方法,透過注入惡意程式指令的方式的方式,使得使用者在訪問該網頁時,同時會執行該惡意程式碼。這將可能導致攻擊者可擷取使用者的私密網頁內容、對談或是透過擷取 Cookie 或 Session 資料而假冒使用者為合法使用者等。
主要分為以下三種:
遭到被保存在伺服器資料庫中的 JavaScript 代碼引起的攻擊
Stored XSS 就是讓 JavaScript 可以儲存在網站資料庫中,最常見的例子就是網站留言板或是訊息。
由於留言板的各式較無限制,因此駭客就可以把程式碼放在留言板中,等待下一個瀏覽該留言板的受害者。
網站會反應使用者所輸入的 URL(含 JavaScript 代碼)引起的攻擊
當攻擊者發現某個網站可以執行預期的惡意程式碼時,攻擊者就可以把受害 (被植入 JavaScript)網站的 URL 透過釣魚的方式或是郵件傳送給被害人。當被害人點擊該 URL時,就會看到且執行該 JavaScript。由於需要用戶主動打開惡意的URL 才能生效,攻擊者往往會結合多種手段誘導用戶點擊。
網頁javascript在執行過程中,沒有詳細檢查資料使操作DOM的過程中帶入惡意的指令
DOM 全稱為 Document Object Model,用以描述 HTML 文件的表示法,它讓我們可以使用 JavaScript 動態產生完整的網頁,而不必透過伺服器。
如下程式碼:
<script>
function cat() {
var str = document.getElementById("meow").value;
document.getElementById("cats").innerHTML = "<a href='" + str + "' >Meowiscute</a>";
}
</script>
<div id="cats"></div>
<input type="text" id="meow" value="" />
<input type="button" id="s" value="write" onclick="cat()" />
在這裡,"write"按鈕的 onclick 事件使用了 cat() 函數。而在 cat() 函數中,修改了 DOM 節點,通過 innerHTML 把一段用戶資料當作 HTML 寫入到頁面中,這就造成了 DOM-Based XSS
組織如下語句:
' onclick=alert(/xss/)//
輸入後,頁面程式碼就變成了:
<a href='' onclick=alert(/xss/)//'>Meowiscute</a>
首先,我們先將 href 的第一個單引號用'
閉合掉,然後插入一個 onclick 事件
最後再用//
註釋掉第二個單引號。
最後腳本執行
DOM 型XSS 跟前兩種XSS 的區別:DOM 型XSS 攻擊中,取出和執行惡意代碼由瀏覽器端完成,屬於前端JavaScript 自身的安全漏洞,而其他兩種XSS 都屬於服務端的安全漏洞。
.
.
.
好喔 今天先到這裡,明天我們再繼續,絕對不是因為我參加 DEVCORE ,所以沒時間寫文章的喵。
ฅ●ω●ฅ